/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package servidormemory;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.Timer;
import memory.Jugador;
import memory.Puntuacion;

/**
 *
 * @author DAM110
 */
public class GuardarPuntuacion {
    
    private static Puntuacion global;
    
    
    public static void guardarPuntuacion(ArrayList<Jugador> p){
        
        global.addAll(p);        
    }
    
    public static boolean guardarNombresObject(Puntuacion p){
        
        
        ObjectOutputStream oos = null;
        
        
        try{
            
            oos = new ObjectOutputStream(new FileOutputStream("Jugadores.obj"));
           
            ArrayList<Jugador> escribir = new ArrayList();
            escribir.addAll(p);
            oos.writeObject(escribir);
            
            
            oos.flush();
            oos.close();
                    
        } catch (IOException ex) {
            
            Logger.getLogger(GuardarPuntuacion.class.getName()).log(Level.SEVERE, null, ex);
        }finally{
            
            try {
                
                oos.close();            
            } catch (IOException ex) {
                Logger.getLogger(GuardarPuntuacion.class.getName()).log(Level.SEVERE, null, ex);
                return false;
            }
            
        }
        
        return true;
    }
    
    public static void reiniciarPuntuacion(){
        
        
        GuardarPuntuacion.global = new Puntuacion();
    }
    public static void recuperarNombresObject(){
        
        ObjectInputStream entrada;
        Puntuacion p = new Puntuacion();
        try {
            
            File archivo= new File("Jugadores.obj");
            archivo.createNewFile();
            if(archivo.length() < 2){
                
                GuardarPuntuacion.guardarNombresObject(new Puntuacion());
            }
            entrada = new ObjectInputStream(new FileInputStream(archivo));
                
            ArrayList<Jugador> leido = (ArrayList<Jugador>)entrada.readObject();
            
            p.addAll(leido);
            
            
            entrada.close();
            
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(GuardarPuntuacion.class.getName()).log(Level.SEVERE, null, ex);
        }catch (FileNotFoundException ex) {
            Logger.getLogger(GuardarPuntuacion.class.getName()).log(Level.SEVERE, null, ex);
        }catch (IOException ex) {
            Logger.getLogger(GuardarPuntuacion.class.getName()).log(Level.SEVERE, null, ex);
        }catch (Exception ex){
            Logger.getLogger(GuardarPuntuacion.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        GuardarPuntuacion.global = p;
    }

    public static Puntuacion getGlobal() {
        return global;
    }
    
    public static void iniciarGuardado(){
        
        
        ActionListener al = new ActionListener(){           
            @Override
            public void actionPerformed(ActionEvent e) {
                
                
                GuardarPuntuacion.guardarNombresObject(global);
                java.util.Date d = new java.util.Date();
                java.text.Format f = new java.text.SimpleDateFormat("HH:mm:ss");
                GestionarEstado.setLEscrito("Guardado  "+f.format(d));
            }
            
        };
        Timer temp = new Timer(60000,al);
        
        temp.start();
    }
    
}
